//Dibawah ini gw ada beberapa kondisi yang gw pikir
//sebaiknya dimasukkan ke dalam proses driver.
//Ini supaya programnya bisa berjalan dengan lancar.

//yang segiempat, walaupun disuruhnya pake TopLeft ama BottomRight,
//Please jadiin 4 titik aja. Toh ga ada command khusus mengenai persegi panjang.
//Urutannya harus counter clockwise
//jadi point 0 = BottomLeft
//Point 1 = BottomRight
//Point 2 = TopRight
//Point 3 = TopLeft

//Ini cara ngebuat poligon dengan N sudut, supaya : 
//1. Memungkinkan mengecek apakah dua poligon sama persis dengan cepat
//2. Mencari Convex Hull udah tinggal pake stack. (cari Graham's Scan kalo ga ngerti).
//3. Memastikan rumus Green buat luas poligon langsung positif.
//4. Pasti counter clockwise (penting, soalnya program gw asumsinya bidang itu counter clockwise).

//banyak = jumlah titik dalam bidang.

vector<Point> sem;
mulai = 0;
for (int i=0;i<banyak;++i) {
    scanf("%d %d",&x,&y);
    sem.push_back(Point(x,y));
    if ((y < sem[mulai].GetY())||((y == sem[mulai].GetY())&&(x < sem[mulai].GetX()))) mulai = i;
}

//Ngegeser supaya titik mulainya di indeks 0.
vector<Point> ok;
for (int i=mulai;i<banyak;++i) ok.push_back(sem[i]);
for (int i=0;i<=mulai;++i) ok.push_back(sem[i]);
//Sengaja, entar pas masukin ke bidang titik mulai yang ke dobel ya jangan dimasukin.

//Ini ngitung luas polygonnya pake Surveyor's Formula / Shoelace formula
luas = 0;
for (int i=0;i<banyak;++i)
    luas += (ok[i].GetX()*ok[i+1].GetY() - ok[i+1].GetX()*ok[i].GetY());

//Kalo swapnya males bikin sendiri, bisa pake #include<algorithm>    
if (luas < 0) {
    int kiri = 1;
    int kanan = banyak-1;
    
    while (kiri < kanan) {
        swap(ok[kiri],ok[kanan]);
        ++kiri;
        --kanan;
    }
}

//Udah, masukin ke dalam bidang, nPoint = banyak,
//Sudut[0] = ok[0], Sudut[1] = ok[1], ... , Sudut[banyak-1] = ok[banyak-1]